/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package presentacion.acceso;

import hibernate.objeto.Cie9mc;
import hibernate.objeto.DiagnosticoYTriageInternacion;
import hibernate.objeto.EnfermedadYDiagnosticoAmbulatorio;
import hibernate.objeto.Evolucion;
import hibernate.objeto.EvolucionEnfermeriaDeInternacion;
import hibernate.objeto.InformacionSocial;
import hibernate.objeto.NombreComercialMedicamento;
import hibernate.objeto.Paciente;
import hibernate.objeto.Persona;
import hibernate.objeto.Usuario;
import hibernate.objeto.Vacuna;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JEditorPane;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import logica.CapaLogica;
import logica.EvolucionLogica;
import logica.InterconsultaLogica;
import presentacion.utilidad.Imprimir;
import presentacion.CapaPresentacion;
import presentacion.documento.DocumentoPresentacion;
import presentacion.GestionPacientePresentacion;
import presentacion.MenuPrincipal;
import presentacion.enfermedad_y_diagnostico.EnfermedadYDiagnosticoAmbulatorioPresentacion;
import presentacion.tratamiento_medicamentoso.HistorialTratamientoMedicamentosoPresentacion;
import presentacion.evolucion.InterconsultaPresentacion;
import presentacion.tratamiento_medicamentoso.TratamientoMedicamentosoPresentacion;
import presentacion.cie9mc.Cie9mcPresentacion;
import presentacion.cie9mc.GestionCie9mcPresentacion;
import presentacion.enfermedad_y_diagnostico.DiagnosticoYTriageInternacionPresentacion;
import presentacion.eventos.EventosPresentacion;
import presentacion.evolucion.EpicrisisInternacionPresentacion;
import presentacion.evolucion.EvolucionEnfermeriaDeInternacionPresentacion;
import presentacion.evolucion.EvolucionPresentacion;
import presentacion.examen.ExamenComplementarioPresentacion;
import presentacion.medicamento.GestionMedicamentoPresentacion;
import presentacion.medicamento.MedicamentoPresentacion;
import presentacion.obra_social.GestionObraSocialPresentacion;
import presentacion.paciente.AntecedentePacientePresentacion;
import presentacion.paciente.FichaMortalidadPacientePresentacion;
import presentacion.paciente.InformacionSocialPacientePresentacion;
import presentacion.paciente.PacientePresentacion;
import presentacion.persona.PersonaPresentacion;
import presentacion.persona.ReasignarContactoAPacientePresentacion;
import presentacion.tratamiento_y_practica.TratamientoYPracticaPresentacion;
import presentacion.utilidad.MensajePresentacion;
import presentacion.vacuna.AplicacionVacunaPresentacion;
import presentacion.vacuna.GestionVacunaPresentacion;
import presentacion.vacuna.VacunaPresentacion;

/**
 *
 * @author Rafael
 */
public class RestriccionAcceso {

    private static int accesoUsuario;

    //RESTRICCION DEL ACCESO
    public static final int ACCESO_ADMINISTRADOR = 5;
    public static final int ACCESO_MEDICO = 4;
    public static final int ACCESO_ENFERMERIA = 3;
    public static final int ACCESO_SECRETARIA = 2;

    public static void UsuarioPresentacion(java.awt.Frame parent, boolean modal) {
        //Se resguarda el valor de las varibles modo ya q seran redefinidas
        boolean modoCargaTemporal = CapaPresentacion.modoCarga;
        boolean modoModificacionTemporal = CapaPresentacion.modoModificacion;
        boolean modoVisualizacionTemporal = CapaPresentacion.modoVisualizacion;

        if (restringirAccesoFuncionalidad(ACCESO_ADMINISTRADOR)) {
            new UsuarioPresentacion(
                    parent, modal).setVisible(true);
        } else {
            MensajePresentacion.informarUsuarioRestringido();
        }

        //Se vuelven a setear las variables segun el valor anterior
        CapaPresentacion.modoCarga = modoCargaTemporal;
        CapaPresentacion.modoModificacion = modoModificacionTemporal;
        CapaPresentacion.modoVisualizacion = modoVisualizacionTemporal;
    }

    public static void PacientePresentacion(java.awt.Frame parent, boolean modal,
            Paciente paciente) {
        //Se resguarda el valor de las varibles modo ya q seran redefinidas
        boolean modoCargaTemporal = CapaPresentacion.modoCarga;
        boolean modoModificacionTemporal = CapaPresentacion.modoModificacion;
        boolean modoVisualizacionTemporal = CapaPresentacion.modoVisualizacion;

        CapaPresentacion.resetearVariablesModalidad();

        if (restringirAccesoFuncionalidad(ACCESO_SECRETARIA)) {
            //Si tiene acceso
            if (paciente == null ||
                    (paciente != null &&
                    paciente.getFichaMortalidad() == null)) {
                //Si el paciente esta vivo
                if (paciente == null) {
                    //Paciente nuevo
                    CapaPresentacion.modoCarga = true;
                } else {
                    //Paciente existente
                    CapaPresentacion.modoModificacion = true;
                }
            } else if (paciente == null) {
                //Si esta fallecido y se trata de un nuevo paciente
                ;
            } else {
                //Si aun no se ha entrado al sistema visualiza error
                if (GestionPacientePresentacion.getPaciente() == null) {
                    MensajePresentacion.informarPacienteFallecido();
                }
                //Si esta fallecido y se trata de un paciente existente
                CapaPresentacion.modoVisualizacion = true;
            }

        } else if(paciente == null) {
            //Si no tiene acceso y se trata de un nuevo paciente
            MensajePresentacion.informarUsuarioRestringido();
        } else {
            //Si no tiene acceso y se trata de un paciente existente
            CapaPresentacion.modoVisualizacion = true;
            MensajePresentacion.informarUsuarioRestringido();
        }

        if (CapaPresentacion.modalidadSeteada()) {
            new PacientePresentacion(
                    parent, modal, paciente).setVisible(true);
        }

        //Se vuelven a setear las variables segun el valor anterior
        CapaPresentacion.modoCarga = modoCargaTemporal;
        CapaPresentacion.modoModificacion = modoModificacionTemporal;
        CapaPresentacion.modoVisualizacion = modoVisualizacionTemporal;
    }

    public static void InformacionSocialPacientePresentacion(java.awt.Frame parent,
            boolean modal, InformacionSocial informacionSocial) {
        //Se resguarda el valor de las varibles modo ya q seran redefinidas
        boolean modoCargaTemporal = CapaPresentacion.modoCarga;
        boolean modoModificacionTemporal = CapaPresentacion.modoModificacion;
        boolean modoVisualizacionTemporal = CapaPresentacion.modoVisualizacion;

        CapaPresentacion.resetearVariablesModalidad();

        if (restringirAccesoFuncionalidad(ACCESO_SECRETARIA)) {
            //Si tiene acceso
            if (!GestionPacientePresentacion.esPacienteFallecido()) {
                //Si el paciente esta vivo
                if (informacionSocial == null) {
                    //Información Social nueva
                    CapaPresentacion.modoCarga = true;
                } else {
                    //Información Social existente
                    CapaPresentacion.modoModificacion = true;
                }
            } else if (informacionSocial == null) {
                //Si esta fallecido y se trata de una nueva información social
                ;
            } else {
                //Si esta fallecido y se trata de una información social existente
                CapaPresentacion.modoVisualizacion = true;
            }

        } else if(informacionSocial == null) {
            //Si no tiene acceso y se trata de una información social nueva
            MensajePresentacion.informarUsuarioRestringido();
        } else {
            //Si no tiene acceso y se trata de una información social existente
            CapaPresentacion.modoVisualizacion = true;
            MensajePresentacion.informarUsuarioRestringido();
        }

        if (CapaPresentacion.modalidadSeteada()) {
            new InformacionSocialPacientePresentacion(
                    parent, modal, informacionSocial).setVisible(true);
        }

        //Se vuelven a setear las variables segun el valor anterior
        CapaPresentacion.modoCarga = modoCargaTemporal;
        CapaPresentacion.modoModificacion = modoModificacionTemporal;
        CapaPresentacion.modoVisualizacion = modoVisualizacionTemporal;
    }

    public static void FichaMortalidadPacientePresentacion(java.awt.Frame parent,
            boolean modal) {
        //Se resguarda el valor de las varibles modo ya q seran redefinidas
        boolean modoCargaTemporal = CapaPresentacion.modoCarga;
        boolean modoModificacionTemporal = CapaPresentacion.modoModificacion;
        boolean modoVisualizacionTemporal = CapaPresentacion.modoVisualizacion;

        CapaPresentacion.resetearVariablesModalidad();

        if (restringirAccesoFuncionalidad(ACCESO_MEDICO)) {
            //Si tiene acceso
            if (GestionPacientePresentacion.getPaciente().getFichaMortalidad() == null) {
                //Ficha Mortalidad nueva
                CapaPresentacion.modoCarga = true;
            } else {
                //Ficha Mortalidad existente
                CapaPresentacion.modoModificacion = true;
            }

        } else if(GestionPacientePresentacion.getPaciente().getFichaMortalidad() == null) {
            //Si no tiene acceso y se trata de una ficha mortalidad nueva
            MensajePresentacion.informarUsuarioRestringido();
        } else {
            //Si no tiene acceso y se trata de una ficha mortalidad existente
            CapaPresentacion.modoVisualizacion = true;
            MensajePresentacion.informarUsuarioRestringido();
        }

        if (CapaPresentacion.modalidadSeteada()) {
            new FichaMortalidadPacientePresentacion(
                    parent, modal).setVisible(true);
        }

        //Se vuelven a setear las variables segun el valor anterior
        CapaPresentacion.modoCarga = modoCargaTemporal;
        CapaPresentacion.modoModificacion = modoModificacionTemporal;
        CapaPresentacion.modoVisualizacion = modoVisualizacionTemporal;
    }

    public static void AntecedentePacientePresentacion(
            java.awt.Frame parent, boolean modal) {
        //Se resguarda el valor de las varibles modo ya q seran redefinidas
        boolean modoCargaTemporal = CapaPresentacion.modoCarga;
        boolean modoModificacionTemporal = CapaPresentacion.modoModificacion;
        boolean modoVisualizacionTemporal = CapaPresentacion.modoVisualizacion;

        CapaPresentacion.resetearVariablesModalidad();

        if (restringirAccesoFuncionalidad(ACCESO_MEDICO)) {
            //Si tiene acceso
            if (!GestionPacientePresentacion.esPacienteFallecido()) {
                //Si el paciente esta vivo
                CapaPresentacion.modoCarga = true;
                CapaPresentacion.modoModificacion = true;
            } else {
                //Si esta fallecido
                CapaPresentacion.modoVisualizacion = true;
            }
        } else {
            //Si no tiene acceso
            CapaPresentacion.modoVisualizacion = true;
            MensajePresentacion.informarUsuarioRestringido();
        }

        if (CapaPresentacion.modalidadSeteada()) {
            new AntecedentePacientePresentacion(
                parent, modal).setVisible(true);
        }

        //Se vuelven a setear las variables segun el valor anterior
        CapaPresentacion.modoCarga = modoCargaTemporal;
        CapaPresentacion.modoModificacion = modoModificacionTemporal;
        CapaPresentacion.modoVisualizacion = modoVisualizacionTemporal;
    }

    public static void PersonaPresentacion(java.awt.Frame parent, boolean modal,
            Persona persona) {
        /* Nota: Esta ventana no es restringida, debido a que es llamada desde
           ventanas que ya han sido restringidas. */

        new PersonaPresentacion(
                parent, modal, persona).setVisible(true);
    }

    public static void ReasignarContactoAPacientePresentacion(java.awt.Frame parent,
            boolean modal, Persona persona) {
        //Se resguarda el valor de las varibles modo ya q seran redefinidas
        boolean modoCargaTemporal = CapaPresentacion.modoCarga;
        boolean modoModificacionTemporal = CapaPresentacion.modoModificacion;
        boolean modoVisualizacionTemporal = CapaPresentacion.modoVisualizacion;

        /* Nota: Esta ventana no es restringida, debido a que es llamada desde
           ventanas que ya han sido restringidas. */
        if (restringirAccesoFuncionalidad(ACCESO_SECRETARIA)) {
            new ReasignarContactoAPacientePresentacion(
                    parent, modal, persona).setVisible(true);
        } else {
            MensajePresentacion.informarUsuarioRestringido();
        }

        //Se vuelven a setear las variables segun el valor anterior
        CapaPresentacion.modoCarga = modoCargaTemporal;
        CapaPresentacion.modoModificacion = modoModificacionTemporal;
        CapaPresentacion.modoVisualizacion = modoVisualizacionTemporal;
    }

    public static void Cie9mcPresentacion(java.awt.Frame parent, boolean modal,
            Cie9mc cie9mc) {
        //Se resguarda el valor de las varibles modo ya q seran redefinidas
        boolean modoCargaTemporal = CapaPresentacion.modoCarga;
        boolean modoModificacionTemporal = CapaPresentacion.modoModificacion;
        boolean modoVisualizacionTemporal = CapaPresentacion.modoVisualizacion;
        CapaPresentacion.resetearVariablesModalidad();

        if (restringirAccesoFuncionalidad(ACCESO_MEDICO)) {
            //Si tiene acceso
            if (cie9mc == null) {
                //Cie nueva
                CapaPresentacion.modoCarga = true;
            } else {
                //Cie existente
                CapaPresentacion.modoModificacion = true;
            }
        } else if (cie9mc != null) {
            //Si no tiene acceso y se trata de una Cie existente
            CapaPresentacion.modoVisualizacion = true;
            MensajePresentacion.informarUsuarioRestringido();
        }

        if (CapaPresentacion.modalidadSeteada()) {
            new Cie9mcPresentacion(
                    parent, modal, cie9mc).setVisible(true);
        }

        //Se vuelven a setear las variables segun el valor anterior
        CapaPresentacion.modoCarga = modoCargaTemporal;
        CapaPresentacion.modoModificacion = modoModificacionTemporal;
        CapaPresentacion.modoVisualizacion = modoVisualizacionTemporal;
    }

    public static void GestionCie9mcPresentacion(java.awt.Frame parent,
            boolean modal, boolean enfermedadesPropias, boolean esGuiVisualizacion) {
        //Se resguarda el valor de las varibles modo ya q seran redefinidas
        boolean modoCargaTemporal = CapaPresentacion.modoCarga;
        boolean modoModificacionTemporal = CapaPresentacion.modoModificacion;
        boolean modoVisualizacionTemporal = CapaPresentacion.modoVisualizacion;
        
        CapaPresentacion.resetearVariablesModalidad();

        if (restringirAccesoFuncionalidad(ACCESO_MEDICO)) {
            //Si tiene acceso
            CapaPresentacion.modoCarga = true;
            CapaPresentacion.modoModificacion = true;
        } else {
            //Si no tiene acceso
            CapaPresentacion.modoVisualizacion = true;
            MensajePresentacion.informarUsuarioRestringido();
        }

        if (CapaPresentacion.modalidadSeteada()) {
            new GestionCie9mcPresentacion(
                    parent, modal, enfermedadesPropias,
                    esGuiVisualizacion).setVisible(true);
        }

        //Se vuelven a setear las variables segun el valor anterior
        CapaPresentacion.modoCarga = modoCargaTemporal;
        CapaPresentacion.modoModificacion = modoModificacionTemporal;
        CapaPresentacion.modoVisualizacion = modoVisualizacionTemporal;
    }

    public static void ExamenComplementarioPresentacion(java.awt.Frame parent,
            boolean modal) {
        //Se resguarda el valor de las varibles modo ya q seran redefinidas
        boolean modoCargaTemporal = CapaPresentacion.modoCarga;
        boolean modoModificacionTemporal = CapaPresentacion.modoModificacion;
        boolean modoVisualizacionTemporal = CapaPresentacion.modoVisualizacion;

        CapaPresentacion.resetearVariablesModalidad();

        if (restringirAccesoFuncionalidad(ACCESO_MEDICO)) {
            //Si tiene acceso
            if (!GestionPacientePresentacion.esPacienteFallecido()) {
                //Si el paciente esta vivo
                CapaPresentacion.modoCarga = true;
                CapaPresentacion.modoModificacion = true;
            } else {
                //Si esta fallecido y se trata de un examen existente
                CapaPresentacion.modoVisualizacion = true;
            }

        } else {
            //Si no tiene acceso y se trata de un examen existente
            CapaPresentacion.modoVisualizacion = true;
            MensajePresentacion.informarUsuarioRestringido();
        }

        if (CapaPresentacion.modalidadSeteada()) {
            new ExamenComplementarioPresentacion(
                    parent, modal).setVisible(true);
        }

        //Se vuelven a setear las variables segun el valor anterior
        CapaPresentacion.modoCarga = modoCargaTemporal;
        CapaPresentacion.modoModificacion = modoModificacionTemporal;
        CapaPresentacion.modoVisualizacion = modoVisualizacionTemporal;
    }

    public static void MedicamentoPresentacion(java.awt.Frame parent, boolean modal,
            NombreComercialMedicamento nombreComercialMedicamento) {
        //Se resguarda el valor de las varibles modo ya q seran redefinidas
        boolean modoCargaTemporal = CapaPresentacion.modoCarga;
        boolean modoModificacionTemporal = CapaPresentacion.modoModificacion;
        boolean modoVisualizacionTemporal = CapaPresentacion.modoVisualizacion;

        CapaPresentacion.resetearVariablesModalidad();

        if (restringirAccesoFuncionalidad(ACCESO_MEDICO)) {
            //Si el paciente esta vivo
            if (nombreComercialMedicamento == null) {
                //Nombre comercial nuevo
                CapaPresentacion.modoCarga = true;
            } else {
                //Nombre comercial existente
                CapaPresentacion.modoModificacion = true;
            }

        } else if(nombreComercialMedicamento == null) {
            //Si no tiene acceso y se trata de un nombre comercial nuevo
            MensajePresentacion.informarUsuarioRestringido();
        } else {
            //Si no tiene acceso y se trata de un nombre comercial existente
            CapaPresentacion.modoVisualizacion = true;
            MensajePresentacion.informarUsuarioRestringido();
        }

        if (CapaPresentacion.modalidadSeteada()) {
            new MedicamentoPresentacion(
                        parent, modal, nombreComercialMedicamento).setVisible(true);
        }

        //Se vuelven a setear las variables segun el valor anterior
        CapaPresentacion.modoCarga = modoCargaTemporal;
        CapaPresentacion.modoModificacion = modoModificacionTemporal;
        CapaPresentacion.modoVisualizacion = modoVisualizacionTemporal;
    }

    public static void GestionMedicamentoPresentacion(java.awt.Frame parent,
            boolean modal, boolean esVisualizacion) {
        //Se resguarda el valor de las varibles modo ya q seran redefinidas
        boolean modoCargaTemporal = CapaPresentacion.modoCarga;
        boolean modoModificacionTemporal = CapaPresentacion.modoModificacion;
        boolean modoVisualizacionTemporal = CapaPresentacion.modoVisualizacion;

        CapaPresentacion.resetearVariablesModalidad();

        if (restringirAccesoFuncionalidad(ACCESO_SECRETARIA)) {
            //Si tiene acceso
            CapaPresentacion.modoCarga = true;
            CapaPresentacion.modoModificacion = true;
        } else {
            //Si no tiene acceso
            CapaPresentacion.modoVisualizacion = true;
            MensajePresentacion.informarUsuarioRestringido();
        }

        if (CapaPresentacion.modalidadSeteada()) {
            new GestionMedicamentoPresentacion(
                    parent, modal, esVisualizacion).setVisible(true);
        }

        //Se vuelven a setear las variables segun el valor anterior
        CapaPresentacion.modoCarga = modoCargaTemporal;
        CapaPresentacion.modoModificacion = modoModificacionTemporal;
        CapaPresentacion.modoVisualizacion = modoVisualizacionTemporal;
    }

    public static void GestionObraSocialPresentacion(java.awt.Frame parent, 
            boolean modal, boolean esGuiVisualizacion) {
        //Se resguarda el valor de las varibles modo ya q seran redefinidas
        boolean modoCargaTemporal = CapaPresentacion.modoCarga;
        boolean modoModificacionTemporal = CapaPresentacion.modoModificacion;
        boolean modoVisualizacionTemporal = CapaPresentacion.modoVisualizacion;

        CapaPresentacion.resetearVariablesModalidad();

        if (restringirAccesoFuncionalidad(ACCESO_SECRETARIA)) {
            //Si tiene acceso
            CapaPresentacion.modoCarga = true;
            CapaPresentacion.modoModificacion = true;
        } else {
            //Si no tiene acceso
            CapaPresentacion.modoVisualizacion = true;
            MensajePresentacion.informarUsuarioRestringido();
        }
        
        if (CapaPresentacion.modalidadSeteada()) {
            new GestionObraSocialPresentacion(
                    parent, modal, esGuiVisualizacion).setVisible(true);
        }

        //Se vuelven a setear las variables segun el valor anterior
        CapaPresentacion.modoCarga = modoCargaTemporal;
        CapaPresentacion.modoModificacion = modoModificacionTemporal;
        CapaPresentacion.modoVisualizacion = modoVisualizacionTemporal;
    }

    public static void VacunaPresentacion(java.awt.Frame parent, boolean modal,
            Vacuna vacuna) {
        //Se resguarda el valor de las varibles modo ya q seran redefinidas
        boolean modoCargaTemporal = CapaPresentacion.modoCarga;
        boolean modoModificacionTemporal = CapaPresentacion.modoModificacion;
        boolean modoVisualizacionTemporal = CapaPresentacion.modoVisualizacion;

        CapaPresentacion.resetearVariablesModalidad();

        if (restringirAccesoFuncionalidad(ACCESO_MEDICO)) {
            //Si tiene acceso
            if (!GestionPacientePresentacion.esPacienteFallecido()) {
                //Si el paciente esta vivo
                if (vacuna == null) {
                    //Vacuna nueva
                    CapaPresentacion.modoCarga = true;
                } else {
                    //Vacuna existente
                    CapaPresentacion.modoModificacion = true;
                }
            } else if (vacuna == null) {
                //Si esta fallecido y se trata de una vacuna nueva
                ;
            } else {
                //Si esta fallecido y se trata de una vacuna existente
                CapaPresentacion.modoVisualizacion = true;
            }

        } else if(vacuna == null) {
            //Si no tiene acceso y se trata de una vacuna nueva
            MensajePresentacion.informarUsuarioRestringido();
        } else {
            //Si no tiene acceso y se trata de una vacuna existente
            CapaPresentacion.modoVisualizacion = true;
            MensajePresentacion.informarUsuarioRestringido();
        }

        if (CapaPresentacion.modalidadSeteada()) {
            new VacunaPresentacion(
                parent, modal, vacuna).setVisible(true);
        }

        //Se vuelven a setear las variables segun el valor anterior
        CapaPresentacion.modoCarga = modoCargaTemporal;
        CapaPresentacion.modoModificacion = modoModificacionTemporal;
        CapaPresentacion.modoVisualizacion = modoVisualizacionTemporal;
    }

    public static void GestionVacunaPresentacion(java.awt.Frame parent, boolean modal) {
        //Se resguarda el valor de las varibles modo ya q seran redefinidas
        boolean modoCargaTemporal = CapaPresentacion.modoCarga;
        boolean modoModificacionTemporal = CapaPresentacion.modoModificacion;
        boolean modoVisualizacionTemporal = CapaPresentacion.modoVisualizacion;

        CapaPresentacion.resetearVariablesModalidad();

        if (restringirAccesoFuncionalidad(ACCESO_MEDICO)) {
            //Si tiene acceso
            CapaPresentacion.modoCarga = true;
            CapaPresentacion.modoModificacion = true;
        } else {
            //Si no tiene acceso
            CapaPresentacion.modoVisualizacion = true;
            MensajePresentacion.informarUsuarioRestringido();
        }

        if (CapaPresentacion.modalidadSeteada()) {
            new GestionVacunaPresentacion(
                    parent, modal).setVisible(true);
        }

        //Se vuelven a setear las variables segun el valor anterior
        CapaPresentacion.modoCarga = modoCargaTemporal;
        CapaPresentacion.modoModificacion = modoModificacionTemporal;
        CapaPresentacion.modoVisualizacion = modoVisualizacionTemporal;
    }

    public static void AplicacionVacunaPresentacion(java.awt.Frame parent,
            boolean modal) {
        //Se resguarda el valor de las varibles modo ya q seran redefinidas
        boolean modoCargaTemporal = CapaPresentacion.modoCarga;
        boolean modoModificacionTemporal = CapaPresentacion.modoModificacion;
        boolean modoVisualizacionTemporal = CapaPresentacion.modoVisualizacion;

        CapaPresentacion.resetearVariablesModalidad();

        if (restringirAccesoFuncionalidad(ACCESO_MEDICO)) {
            //Si tiene acceso
            if (!GestionPacientePresentacion.esPacienteFallecido()) {
                //Si el paciente esta vivo
                CapaPresentacion.modoCarga = true;
                CapaPresentacion.modoModificacion = true;
            } else {
                //Si esta fallecido
                CapaPresentacion.modoVisualizacion = true;
            }

        } else {
            //Si no tiene acceso
            CapaPresentacion.modoVisualizacion = true;
            MensajePresentacion.informarUsuarioRestringido();
        }

        if (CapaPresentacion.modalidadSeteada()) {
            new AplicacionVacunaPresentacion(
                parent, modal).setVisible(true);
        }

        //Se vuelven a setear las variables segun el valor anterior
        CapaPresentacion.modoCarga = modoCargaTemporal;
        CapaPresentacion.modoModificacion = modoModificacionTemporal;
        CapaPresentacion.modoVisualizacion = modoVisualizacionTemporal;
    }

    public static void GestionPacientePresentacion(java.awt.Frame parent,
            boolean modal, Paciente paciente) {
        //Se resguarda el valor de las varibles modo ya q seran redefinidas
        boolean modoCargaTemporal = CapaPresentacion.modoCarga;
        boolean modoModificacionTemporal = CapaPresentacion.modoModificacion;
        boolean modoVisualizacionTemporal = CapaPresentacion.modoVisualizacion;

        CapaPresentacion.resetearVariablesModalidad();

        if (restringirAccesoFuncionalidad(ACCESO_MEDICO)) {
            //Si tiene acceso
            if (paciente.getFichaMortalidad() == null) {
                //Si el paciente esta vivo
                CapaPresentacion.modoCarga = true;
            } else {
                //Si el paciente esta fallecido
                CapaPresentacion.modoVisualizacion = true;
                MensajePresentacion.informarPacienteFallecido();
            }
        } else {
            //Si no tiene acceso
            CapaPresentacion.modoVisualizacion = true;
            MensajePresentacion.informarUsuarioRestringido();
        }

        if (CapaPresentacion.modalidadSeteada()) {
            new GestionPacientePresentacion(
                parent, modal, paciente).setVisible(true);
        }

        //Se vuelven a setear las variables segun el valor anterior
        CapaPresentacion.modoCarga = modoCargaTemporal;
        CapaPresentacion.modoModificacion = modoModificacionTemporal;
        CapaPresentacion.modoVisualizacion = modoVisualizacionTemporal;
    }

    public static void EnfermedadYDiagnosticoAmbulatorioPresentacion(
            java.awt.Frame parent, boolean modal,
            EnfermedadYDiagnosticoAmbulatorio enfermedadYDiagnosticoAmbulatorio) {
        //Se resguarda el valor de las varibles modo ya q seran redefinidas
        boolean modoCargaTemporal = CapaPresentacion.modoCarga;
        boolean modoModificacionTemporal = CapaPresentacion.modoModificacion;
        boolean modoVisualizacionTemporal = CapaPresentacion.modoVisualizacion;

        CapaPresentacion.resetearVariablesModalidad();
        
        if (restringirAccesoFuncionalidad(ACCESO_MEDICO)) {
            //Si tiene acceso
            if (!GestionPacientePresentacion.esPacienteFallecido()) {
                //Si el paciente esta vivo
                if (enfermedadYDiagnosticoAmbulatorio == null) {
                    //HCA nueva
                    CapaPresentacion.modoCarga = true;                    

                } else if (enfermedadYDiagnosticoAmbulatorio.
                        getEstadoEnfermedadYDiagnosticoAmbulatorio().
                        equalsIgnoreCase("Activa")) {
                    //HCA existente activa
                    CapaPresentacion.modoModificacion = true;
                                    
                } else {
                    //HCA existente no activa
                    CapaPresentacion.modoVisualizacion = true;
                    MensajePresentacion.informarEntidadNoActiva(
                            enfermedadYDiagnosticoAmbulatorio);
                }
            } else if (enfermedadYDiagnosticoAmbulatorio == null) {
                //Si esta fallecido y se trata de una hca nueva
                ;
            } else {
                //Si esta fallecido y se trata de una hca existente
                CapaPresentacion.modoVisualizacion = true;
            }
            
        } else if(enfermedadYDiagnosticoAmbulatorio == null) {
            //Si no tiene acceso y se trata de una hca nueva
            MensajePresentacion.informarUsuarioRestringido();
        } else {
            //Si no tiene acceso y se trata de una hca existente
            CapaPresentacion.modoVisualizacion = true;
            MensajePresentacion.informarUsuarioRestringido();
        }
        
        if (CapaPresentacion.modalidadSeteada()) {
            new EnfermedadYDiagnosticoAmbulatorioPresentacion(parent, modal,
                enfermedadYDiagnosticoAmbulatorio).setVisible(true);
        }

        //Se vuelven a setear las variables segun el valor anterior
        CapaPresentacion.modoCarga = modoCargaTemporal;
        CapaPresentacion.modoModificacion = modoModificacionTemporal;
        CapaPresentacion.modoVisualizacion = modoVisualizacionTemporal;
    }

    public static void DiagnosticoYTriageInternacionPresentacion(
            java.awt.Frame parent, boolean modal,
            DiagnosticoYTriageInternacion diagnosticoYTriageInternacion) {
        //Se resguarda el valor de las varibles modo ya q seran redefinidas
        boolean modoCargaTemporal = CapaPresentacion.modoCarga;
        boolean modoModificacionTemporal = CapaPresentacion.modoModificacion;
        boolean modoVisualizacionTemporal = CapaPresentacion.modoVisualizacion;

        CapaPresentacion.resetearVariablesModalidad();

        if (restringirAccesoFuncionalidad(ACCESO_MEDICO)) {
            //Si tiene acceso
            if (!GestionPacientePresentacion.esPacienteFallecido()) {
                //Si el paciente esta vivo
                if (diagnosticoYTriageInternacion == null) {
                    //Internación nueva
                    CapaPresentacion.modoCarga = true;

                } else if (diagnosticoYTriageInternacion.
                        getEstadoDiagnosticoYTriageInternacion().
                        equalsIgnoreCase("Activa")) {
                    //Internación existente activa
                    CapaPresentacion.modoModificacion = true;

                } else {
                    //Internación existente no activa
                    CapaPresentacion.modoVisualizacion = true;
                    MensajePresentacion.informarEntidadNoActiva(
                            diagnosticoYTriageInternacion);
                }
            } else if (diagnosticoYTriageInternacion == null) {
                //Si esta fallecido y se trata de una internación nueva
                ;
            } else {
                //Si esta fallecido y se trata de una internación existente
                CapaPresentacion.modoVisualizacion = true;
            }

        } else if(diagnosticoYTriageInternacion == null) {
            //Si no tiene acceso y se trata de una internación nueva
            MensajePresentacion.informarUsuarioRestringido();
        } else {
            //Si no tiene acceso y se trata de una internación existente
            CapaPresentacion.modoVisualizacion = true;
            MensajePresentacion.informarUsuarioRestringido();
        }

        if (CapaPresentacion.modalidadSeteada()) {
            new DiagnosticoYTriageInternacionPresentacion(
                    parent, modal, diagnosticoYTriageInternacion).setVisible(true);
        }

        //Se vuelven a setear las variables segun el valor anterior
        CapaPresentacion.modoCarga = modoCargaTemporal;
        CapaPresentacion.modoModificacion = modoModificacionTemporal;
        CapaPresentacion.modoVisualizacion = modoVisualizacionTemporal;
    }

    public static void EpicrisisInternacionPresentacion(
            java.awt.Frame parent, boolean modal,
            DiagnosticoYTriageInternacion diagnosticoYTriageInternacion) {
        //Se resguarda el valor de las varibles modo ya q seran redefinidas
        boolean modoCargaTemporal = CapaPresentacion.modoCarga;
        boolean modoModificacionTemporal = CapaPresentacion.modoModificacion;
        boolean modoVisualizacionTemporal = CapaPresentacion.modoVisualizacion;

        CapaPresentacion.resetearVariablesModalidad();

        if (restringirAccesoFuncionalidad(ACCESO_MEDICO)) {
            //Si tiene acceso
            if (!GestionPacientePresentacion.esPacienteFallecido()) {
                //Si el paciente esta vivo
                if (diagnosticoYTriageInternacion != null &&
                        diagnosticoYTriageInternacion.getEpicrisisInternacion() == null) {
                    //Epicrisis nueva
                    CapaPresentacion.modoCarga = true;

                } else if (diagnosticoYTriageInternacion != null &&
                        diagnosticoYTriageInternacion.getEpicrisisInternacion() != null){
                    //Epicrisus existente
                    CapaPresentacion.modoModificacion = true;
                }
            } else if (diagnosticoYTriageInternacion != null &&
                        diagnosticoYTriageInternacion.getEpicrisisInternacion() == null) {
                //Si esta fallecido y se trata de una epicrisis nueva
                ;
            } else if (diagnosticoYTriageInternacion != null &&
                        diagnosticoYTriageInternacion.getEpicrisisInternacion() != null){
                //Si esta fallecido y se trata de una epicrisis existente
                CapaPresentacion.modoVisualizacion = true;
            }

        } else if (diagnosticoYTriageInternacion != null &&
                        diagnosticoYTriageInternacion.getEpicrisisInternacion() == null) {
            //Si no tiene acceso y se trata de una epicrisis nueva
            MensajePresentacion.informarUsuarioRestringido();
        } else if (diagnosticoYTriageInternacion != null &&
                        diagnosticoYTriageInternacion.getEpicrisisInternacion() != null){
            //Si no tiene acceso y se trata de una epicrisis existente
            CapaPresentacion.modoVisualizacion = true;
            MensajePresentacion.informarUsuarioRestringido();
        }

        if (CapaPresentacion.modalidadSeteada()) {
            new EpicrisisInternacionPresentacion(
                parent, modal, diagnosticoYTriageInternacion).setVisible(true);
        }

        //Se vuelven a setear las variables segun el valor anterior
        CapaPresentacion.modoCarga = modoCargaTemporal;
        CapaPresentacion.modoModificacion = modoModificacionTemporal;
        CapaPresentacion.modoVisualizacion = modoVisualizacionTemporal;
    }

    public static void EvolucionPresentacion(java.awt.Frame parent, boolean modal,
            EnfermedadYDiagnosticoAmbulatorio enfermedadYDiagnosticoAmbulatorio,
            DiagnosticoYTriageInternacion diagnosticoYTriageInternacion,
            Evolucion evolucion) {
        //Se resguarda el valor de las varibles modo ya q seran redefinidas
        boolean modoCargaTemporal = CapaPresentacion.modoCarga;
        boolean modoModificacionTemporal = CapaPresentacion.modoModificacion;
        boolean modoVisualizacionTemporal = CapaPresentacion.modoVisualizacion;

        CapaPresentacion.resetearVariablesModalidad();

        if (restringirAccesoFuncionalidad(ACCESO_MEDICO)) {
            //Si tiene acceso
            if (!GestionPacientePresentacion.esPacienteFallecido()) {
                //Si el paciente esta vivo
                if (evolucion == null &&
                        ((enfermedadYDiagnosticoAmbulatorio != null && enfermedadYDiagnosticoAmbulatorio.getEstadoEnfermedadYDiagnosticoAmbulatorio().equalsIgnoreCase("Activa")) ||
                        (diagnosticoYTriageInternacion != null && diagnosticoYTriageInternacion.getEstadoDiagnosticoYTriageInternacion().equalsIgnoreCase("Activa")))) {
                    //Evolución nueva y HCA o Internación asociada activa
                    CapaPresentacion.modoCarga = true;
                    
                } else if (evolucion != null &&
                        EvolucionLogica.esEvolucionActiva(evolucion)) {
                    //Evolución existente y HCA o Internación asociada activa
                    CapaPresentacion.modoModificacion = true;
                                    
                } else if (evolucion != null) {
                    //Evolución existente y HCA o Internación asociada no activa
                    CapaPresentacion.modoVisualizacion = true;
                    MensajePresentacion.informarEntidadNoActiva(evolucion);
                }
            } else if (evolucion == null) {
                //Si esta fallecido y se trata de una evolución nueva
                ;
            } else {
                //Si esta fallecido y se trata de una evolución existente
                CapaPresentacion.modoVisualizacion = true;
            }
            
        } else if (evolucion == null) {
            //Si no tiene acceso y se trata de una evolución nueva
            MensajePresentacion.informarUsuarioRestringido();
        } else if (evolucion != null) {
            //Si no tiene acceso y se trata de una evolución existente
            CapaPresentacion.modoVisualizacion = true;
            MensajePresentacion.informarUsuarioRestringido();
        }
        
        if (CapaPresentacion.modalidadSeteada()) {
            new EvolucionPresentacion(
                parent, modal,enfermedadYDiagnosticoAmbulatorio,
                diagnosticoYTriageInternacion, evolucion).setVisible(true);
        }

        //Se vuelven a setear las variables segun el valor anterior
        CapaPresentacion.modoCarga = modoCargaTemporal;
        CapaPresentacion.modoModificacion = modoModificacionTemporal;
        CapaPresentacion.modoVisualizacion = modoVisualizacionTemporal;
    }

    public static void HistorialTratamientoMedicamentosoPresentacion(
            java.awt.Frame parent, boolean modal) {
        //Se resguarda el valor de las varibles modo ya q seran redefinidas
        boolean modoCargaTemporal = CapaPresentacion.modoCarga;
        boolean modoModificacionTemporal = CapaPresentacion.modoModificacion;
        boolean modoVisualizacionTemporal = CapaPresentacion.modoVisualizacion;

        CapaPresentacion.resetearVariablesModalidad();

        if (restringirAccesoFuncionalidad(ACCESO_MEDICO)) {
            //Si tiene acceso
            if (!GestionPacientePresentacion.esPacienteFallecido()) {
                //Si el paciente esta vivo
                CapaPresentacion.modoCarga = true;
                CapaPresentacion.modoModificacion = true;
            } else {
                //Si el paciente esta fallecido
                CapaPresentacion.modoVisualizacion = true;
            }
        } else {
            //Si no tiene acceso
            CapaPresentacion.modoVisualizacion = true;
            MensajePresentacion.informarUsuarioRestringido();
        }

        if (CapaPresentacion.modalidadSeteada()) {
            new HistorialTratamientoMedicamentosoPresentacion(
                    parent, modal).setVisible(true);
        }

        //Se vuelven a setear las variables segun el valor anterior
        CapaPresentacion.modoCarga = modoCargaTemporal;
        CapaPresentacion.modoModificacion = modoModificacionTemporal;
        CapaPresentacion.modoVisualizacion = modoVisualizacionTemporal;
    }

    public static void TratamientoMedicamentosoPresentacion(java.awt.Frame parent,
            boolean modal, Evolucion evolucion) {
        //Se resguarda el valor de las varibles modo ya q seran redefinidas
        boolean modoCargaTemporal = CapaPresentacion.modoCarga;
        boolean modoModificacionTemporal = CapaPresentacion.modoModificacion;
        boolean modoVisualizacionTemporal = CapaPresentacion.modoVisualizacion;

        CapaPresentacion.resetearVariablesModalidad();

        if (restringirAccesoFuncionalidad(ACCESO_MEDICO)) {
            //Si tiene acceso
            if (!GestionPacientePresentacion.esPacienteFallecido()) {
                //Si el paciente esta vivo
                if (EvolucionLogica.esEvolucionActiva(evolucion)) {
                    //HCA o Internación asociada activa
                    CapaPresentacion.modoCarga = true;
                    CapaPresentacion.modoModificacion = true;
                } else {
                    //HCA o Internación asociada no activa
                    CapaPresentacion.modoVisualizacion = true;
                    MensajePresentacion.informarEntidadNoActiva(
                            evolucion);
                }
            } else {
                //Si el paciente esta fallecido
                CapaPresentacion.modoVisualizacion = true;
            }
        } else {
            //Si no tiene acceso
            CapaPresentacion.modoVisualizacion = true;
            MensajePresentacion.informarUsuarioRestringido();
        }

        if (CapaPresentacion.modalidadSeteada()) {
            new TratamientoMedicamentosoPresentacion(
                    parent, modal, evolucion).setVisible(true);
        }

        //Se vuelven a setear las variables segun el valor anterior
        CapaPresentacion.modoCarga = modoCargaTemporal;
        CapaPresentacion.modoModificacion = modoModificacionTemporal;
        CapaPresentacion.modoVisualizacion = modoVisualizacionTemporal;
    }

    public static void InterconsultaPresentacion(java.awt.Frame parent, boolean modal,
            EnfermedadYDiagnosticoAmbulatorio enfermedadYDiagnosticoAmbulatorio,
            DiagnosticoYTriageInternacion diagnosticoYTriageInternacion) {
        //Se resguarda el valor de las varibles modo ya q seran redefinidas
        boolean modoCargaTemporal = CapaPresentacion.modoCarga;
        boolean modoModificacionTemporal = CapaPresentacion.modoModificacion;
        boolean modoVisualizacionTemporal = CapaPresentacion.modoVisualizacion;

        CapaPresentacion.resetearVariablesModalidad();

        if (restringirAccesoFuncionalidad(ACCESO_MEDICO)) {
            //Si tiene acceso
            if (!GestionPacientePresentacion.esPacienteFallecido()) {
                //Si el paciente esta vivo
                if (InterconsultaLogica.esInterconsultaActiva(
                enfermedadYDiagnosticoAmbulatorio, diagnosticoYTriageInternacion)) {
                    //HCA o Internación activa
                    CapaPresentacion.modoCarga = true;

                } else {
                    //HCA o Internación no activa
                    CapaPresentacion.modoVisualizacion = true;
                    MensajePresentacion.informarEntidadNoActiva(
                            enfermedadYDiagnosticoAmbulatorio);
                }
            } else {
                CapaPresentacion.modoVisualizacion = true;
            }

        } else {
            //Si no tiene acceso
            CapaPresentacion.modoVisualizacion = true;
            MensajePresentacion.informarUsuarioRestringido();
        }

        if (CapaPresentacion.modalidadSeteada()) {
            new InterconsultaPresentacion(
                parent, modal, enfermedadYDiagnosticoAmbulatorio,
                diagnosticoYTriageInternacion).setVisible(true);
        }

        //Se vuelven a setear las variables segun el valor anterior
        CapaPresentacion.modoCarga = modoCargaTemporal;
        CapaPresentacion.modoModificacion = modoModificacionTemporal;
        CapaPresentacion.modoVisualizacion = modoVisualizacionTemporal;
    }

    public static void TratamientoYPracticaPresentacion(java.awt.Frame parent,
            boolean modal, DiagnosticoYTriageInternacion diagnosticoYTriageInternacion) {
        //Se resguarda el valor de las varibles modo ya q seran redefinidas
        boolean modoCargaTemporal = CapaPresentacion.modoCarga;
        boolean modoModificacionTemporal = CapaPresentacion.modoModificacion;
        boolean modoVisualizacionTemporal = CapaPresentacion.modoVisualizacion;

        CapaPresentacion.resetearVariablesModalidad();

        if (restringirAccesoFuncionalidad(ACCESO_MEDICO)) {
            //Si tiene acceso
            if (!GestionPacientePresentacion.esPacienteFallecido()) {
                //Si el paciente esta vivo
                if (diagnosticoYTriageInternacion.
                        getEstadoDiagnosticoYTriageInternacion().equalsIgnoreCase("Activa")) {
                    //Internación activa
                    CapaPresentacion.modoCarga = true;
                    CapaPresentacion.modoModificacion = true;

                } else {
                    //Internación no activa
                    CapaPresentacion.modoVisualizacion = true;
                    MensajePresentacion.informarEntidadNoActiva(
                            diagnosticoYTriageInternacion);
                }
            } else {
                //Si esta fallecido
                CapaPresentacion.modoVisualizacion = true;
            }

        } else {
            //Si no tiene acceso
            CapaPresentacion.modoVisualizacion = true;
            MensajePresentacion.informarUsuarioRestringido();
        }

        if (CapaPresentacion.modalidadSeteada()) {
            new TratamientoYPracticaPresentacion(
                    parent, modal, diagnosticoYTriageInternacion).setVisible(true);
        }

        //Se vuelven a setear las variables segun el valor anterior
        CapaPresentacion.modoCarga = modoCargaTemporal;
        CapaPresentacion.modoModificacion = modoModificacionTemporal;
        CapaPresentacion.modoVisualizacion = modoVisualizacionTemporal;
     }
     
    public static void CargaDocumentoPresentacion(java.awt.Frame parent,
            boolean modal, boolean esConsentimientoInformado) {
        //Se resguarda el valor de las varibles modo ya q seran redefinidas
        boolean modoCargaTemporal = CapaPresentacion.modoCarga;
        boolean modoModificacionTemporal = CapaPresentacion.modoModificacion;
        boolean modoVisualizacionTemporal = CapaPresentacion.modoVisualizacion;

        CapaPresentacion.resetearVariablesModalidad();

        if (restringirAccesoFuncionalidad(ACCESO_SECRETARIA)) {
            //Si tiene acceso
            CapaPresentacion.modoCarga = true;
            CapaPresentacion.modoModificacion = true;
        } else {
            //Si no tiene acceso
            CapaPresentacion.modoVisualizacion = true;
            MensajePresentacion.informarUsuarioRestringido();
        }

        if (CapaPresentacion.modalidadSeteada()) {
            new DocumentoPresentacion(
                    parent, modal, esConsentimientoInformado).setVisible(true);
        }

        //Se vuelven a setear las variables segun el valor anterior
        CapaPresentacion.modoCarga = modoCargaTemporal;
        CapaPresentacion.modoModificacion = modoModificacionTemporal;
        CapaPresentacion.modoVisualizacion = modoVisualizacionTemporal;
    }

    public static void EvolucionEnfermeriaDeInternacion(java.awt.Frame parent, boolean modal,
            DiagnosticoYTriageInternacion diagnosticoYTriageInternacion,
            EvolucionEnfermeriaDeInternacion evolucionEnfermeriaDeInternacion) {
        //Se resguarda el valor de las varibles modo ya q seran redefinidas
        boolean modoCargaTemporal = CapaPresentacion.modoCarga;
        boolean modoModificacionTemporal = CapaPresentacion.modoModificacion;
        boolean modoVisualizacionTemporal = CapaPresentacion.modoVisualizacion;

        CapaPresentacion.resetearVariablesModalidad();

        if (restringirAccesoFuncionalidad(ACCESO_ENFERMERIA)) {
            //Si tiene acceso
            if (!GestionPacientePresentacion.esPacienteFallecido()) {
                //Si el paciente esta vivo
                if (diagnosticoYTriageInternacion.getEpicrisisInternacion() == null) {
                    //Evolución de enfermería nueva
                    if (evolucionEnfermeriaDeInternacion == null) {
                        CapaPresentacion.modoCarga = true;
                    } else {
                        CapaPresentacion.modoModificacion = true;
                    }
                } else if (evolucionEnfermeriaDeInternacion != null) {
                    CapaPresentacion.modoVisualizacion = true;
                }
            } else if (diagnosticoYTriageInternacion.getEpicrisisInternacion() == null) {
                //Evolución de enfermería nueva
                if (evolucionEnfermeriaDeInternacion == null) {
                    //Si no tiene acceso y se trata de una evolución de enfermería nueva
                    MensajePresentacion.informarUsuarioRestringido();
                } else {
                    CapaPresentacion.modoVisualizacion = true;
                }
            } else if (evolucionEnfermeriaDeInternacion != null) {
                CapaPresentacion.modoVisualizacion = true;
            }

        } else if (diagnosticoYTriageInternacion.getEpicrisisInternacion() == null) {
            //Evolución de enfermería nueva
            if (evolucionEnfermeriaDeInternacion == null) {
                //Si no tiene acceso y se trata de una evolución de enfermería nueva
                MensajePresentacion.informarUsuarioRestringido();
            } else {
                CapaPresentacion.modoVisualizacion = true;
            }
        } else if (evolucionEnfermeriaDeInternacion != null){
            CapaPresentacion.modoVisualizacion = true;
        }

        if (CapaPresentacion.modalidadSeteada()) {
            new EvolucionEnfermeriaDeInternacionPresentacion(
                parent, modal, diagnosticoYTriageInternacion,
                evolucionEnfermeriaDeInternacion).setVisible(true);
        }

        //Se vuelven a setear las variables segun el valor anterior
        CapaPresentacion.modoCarga = modoCargaTemporal;
        CapaPresentacion.modoModificacion = modoModificacionTemporal;
        CapaPresentacion.modoVisualizacion = modoVisualizacionTemporal;
    }

    public static void EventosPresentacion(java.awt.Frame parent, boolean modal) {
        //Se resguarda el valor de las varibles modo ya q seran redefinidas
        boolean modoCargaTemporal = CapaPresentacion.modoCarga;
        boolean modoModificacionTemporal = CapaPresentacion.modoModificacion;
        boolean modoVisualizacionTemporal = CapaPresentacion.modoVisualizacion;

        CapaPresentacion.resetearVariablesModalidad();

        if (restringirAccesoFuncionalidad(ACCESO_SECRETARIA)) {
            //Si tiene acceso
            CapaPresentacion.modoCarga = true;
            CapaPresentacion.modoModificacion = true;
            CapaPresentacion.modoVisualizacion = true;
        } else {
            //Si no tiene acceso
            MensajePresentacion.informarUsuarioRestringido();
        }

        if (CapaPresentacion.modalidadSeteada()) {
            new EventosPresentacion(parent, modal).setVisible(true);
        }

        //Se vuelven a setear las variables segun el valor anterior
        CapaPresentacion.modoCarga = modoCargaTemporal;
        CapaPresentacion.modoModificacion = modoModificacionTemporal;
        CapaPresentacion.modoVisualizacion = modoVisualizacionTemporal;
    }

    public static void Imprimir(java.awt.Frame parent, boolean modal,
            JEditorPane visualizador, Paciente paciente) {
        //Se resguarda el valor de las varibles modo ya q seran redefinidas
        boolean modoCargaTemporal = CapaPresentacion.modoCarga;
        boolean modoModificacionTemporal = CapaPresentacion.modoModificacion;
        boolean modoVisualizacionTemporal = CapaPresentacion.modoVisualizacion;

        CapaPresentacion.resetearVariablesModalidad();

        if (restringirAccesoFuncionalidad(ACCESO_SECRETARIA)) {
            //Si tiene acceso
            CapaPresentacion.modoCarga = true;
            CapaPresentacion.modoModificacion = true;
            CapaPresentacion.modoVisualizacion = true;
        } else {
            //Si no tiene acceso
            MensajePresentacion.informarUsuarioRestringido();
        }

        if (CapaPresentacion.modalidadSeteada()) {
            new Imprimir(parent, modal,
                    visualizador.getText(), paciente).setVisible(true);
        }

        //Se vuelven a setear las variables segun el valor anterior
        CapaPresentacion.modoCarga = modoCargaTemporal;
        CapaPresentacion.modoModificacion = modoModificacionTemporal;
        CapaPresentacion.modoVisualizacion = modoVisualizacionTemporal;
    }

    /**
     * Determina si el usuario logueado tiene permisos para utilizar la
     * funcionalidad.
     *
     * @param permiso El permiso necesario para acceder a dicha funcionalidad
     * @return true si se permite el acceso, false en caso contrario
     */
    public static boolean restringirAccesoFuncionalidad(int permiso) {
        //Unicamente si es Administrador
        if (ACCESO_ADMINISTRADOR == permiso) {
            return MenuPrincipal.usuarioActivo.isAdministradorUsuario();
        }

        if (accesoUsuario >= permiso) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * Dado el tipo de acceso del usuario determina el nivel de restricción del
     * mismo a lo largo de la ejecución.
     *
     * @param usuario El usuario logueado
     */
    public static void determinarAccesoUsuario(Usuario usuario) {
        if (usuario.getTipoDeAccesoUsuario().equalsIgnoreCase(
                "Médico")) {
            accesoUsuario = RestriccionAcceso.ACCESO_MEDICO;
        } else if (usuario.getTipoDeAccesoUsuario().equalsIgnoreCase(
                "Secretaría")) {
            accesoUsuario = RestriccionAcceso.ACCESO_SECRETARIA;
        } else if (usuario.getTipoDeAccesoUsuario().equalsIgnoreCase(
                "Enfermería")) {
            accesoUsuario = RestriccionAcceso.ACCESO_ENFERMERIA;
        }
    }

}
